<?php if ( ! defined('BASEPATH')) exit('No se permite acceso directo al script');
class Util_ubicacion {

    public function cargarUbicacion($id_ubic, $id_localidad, $id_calle, $altura, $piso = '', $depto = '')
    {
        $objUbicacion = new Ubic_ubicacion($id_ubic);

        $objUbicacion->ubic_localidad_id = is_numeric($id_localidad) ? $id_localidad : NULL;
        $objUbicacion->ubic_calle_id = is_numeric($id_calle) ? $id_calle : NULL;
        $objUbicacion->altura = is_numeric($altura) ? $altura : 0;
        $objUbicacion->piso = trim($piso);
        $objUbicacion->depto = trim($depto);

        return $objUbicacion;
    }

    public function guardar($objUbicacion)
    {
        $dataView['error'] = '';

        $objLocalidad = new Ubic_localidad($objUbicacion->ubic_localidad_id);
        $objCalle = new Ubic_calle($objUbicacion->ubic_calle_id);
        $objRelacionados = array($objLocalidad, $objCalle);

        # Se manejan transacciones para interactuar con la BD
        $objUbicacion->trans_begin();
        $operacion_exitosa = $objUbicacion->save($objRelacionados);
        if(!$operacion_exitosa && !$objUbicacion->valid)
        { 
            # Falló la validación de datos de acuerdo a las reglas de los modelos
            $dataView['error'] = $objUbicacion->error->string; 
        }
        else
        {
            if ($objUbicacion->trans_status() === FALSE) # Si la transacción falló, hago un rollback 
                $objUbicacion->trans_rollback();
            else # Transacción exitosa, realizo el commit 
                $objUbicacion->trans_commit();

            # Almaceno todos los errores que hubieran podido ocurrir
            $dataView['error'] = $objUbicacion->error->string;
        }

        $dataView['objUbicacion'] = $objUbicacion;
        return $dataView;
    }
}
/* Fin del archivo */